home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / HardwareProjects / VideoText.lha / VideoText4.2 / source / global.p < prev    next >
Encoding:
Text File  |  1995-06-25  |  3.0 KB  |  106 lines

  1. UNIT global; {$project vt}
  2. { globale Variablen und Typdeklarationen zum Programm VideoText }
  3.  
  4. INTERFACE;
  5.  
  6. CONST qlen = 800;     { max. Anzahl wartender Seitenaufträge }
  7.       maxactive = 4;  { max. Anzahl gleichzeitig suchbarer Seiten im SAA 5246 }
  8.       maxsubpage = 79;
  9.  
  10. TYPE p_onepage = ^onepage;
  11.      onepage = RECORD
  12.                  next,prev: p_onepage;
  13.                  pg,sp: Integer;
  14.                  chars: ARRAY [0..959] OF Byte;
  15.                  cbits: Word;
  16.                END;
  17.      str80 = String[80];
  18.      bigstring = String[256];
  19.      zeiteintrag = RECORD tage,min,tics: Long; END;
  20.  
  21. VAR root,thispage,visblpage: p_onepage;
  22.     queue: ARRAY [1..qlen] OF RECORD
  23.              pg,sp: Integer;
  24.            END;
  25.     queued,firstinq: Integer;
  26.     fifo: Boolean;
  27.     activejobs: ARRAY [0..maxactive-1] OF RECORD
  28.         pg,sp: Integer;          { dies sind Hexzahlen }
  29.         sp_max,akt_sp: Integer;  { (normalerweise BCD) }
  30.         sp_count: Integer;  { dies eine echte Dezimalzahl }
  31.         sp_check: ARRAY [0..maxsubpage] OF Boolean;
  32.         lastaction: zeiteintrag;     { so 'ne Art DateStamp }
  33.         wartezeit: Integer;      { in 50stel Sekunden }
  34.         holen,erledigt: Boolean;
  35.       END;
  36.     thisjob: Integer; { zeigt auf einen wartenden (<0) oder aktiven Job (>=0) }
  37.     outputname,iffpicname: str80;
  38.     asciifile,overwrite,withicon: Boolean;
  39.     lastkey: Char;
  40.  
  41. FUNCTION hexstr(l: Long; digits: Integer): Str;
  42. FUNCTION hexval(s: Str80): Long;
  43. FUNCTION bcd(x: Integer): Integer;
  44.  
  45. { ---------------------------------------------------------------------- }
  46.  
  47. IMPLEMENTATION;
  48.  
  49. {$ opt q,s+,i+} { keine Laufzeitprüfungen außer Stack und Feldindizes }
  50.  
  51. FUNCTION hexstr{(l: Long; digits: Integer): Str};
  52. { Zahl mit mindestens <digits> Stellen nach Hex wandeln: }
  53. VAR i,j,x: Integer;
  54.     s: String[10]; STATIC; { Wichtig! }
  55. BEGIN
  56.   IF digits<1 THEN digits := 1;
  57.   j := 1;
  58.   FOR i := 7 DOWNTO 0 DO
  59.     IF (i<digits) OR (l SHR (4*i)>0) THEN BEGIN
  60.       x := (l SHR (4*i)) AND $F;
  61.       IF x<10 THEN s[j] := Chr(x+ord('0'))
  62.       ELSE s[j] := Chr(x-10+ord('A'));
  63.       Inc(j);
  64.     END;
  65.   s[j] := #0;
  66.   hexstr := ^s;
  67. END;
  68.  
  69. FUNCTION hexval{(s: Str80): Long};
  70. { kann Hexzahlen dekodieren, evtl. "$" wird überlesen }
  71. VAR i: Integer;
  72.     x: Long;
  73. BEGIN
  74.   i := 1; x := 0;
  75.   WHILE s[i]=' ' DO Inc(i);
  76.   IF s[i]='$' THEN Inc(i);
  77.   WHILE s[i] IN ['0'..'9','A'..'F','a'..'f'] DO BEGIN
  78.     x := x SHL 4 + ord(s[i]);
  79.     CASE s[i] OF
  80.       '0'..'9': x := x - ord('0');
  81.       'A'..'F': x := x - ord('A') + 10;
  82.       'a'..'f': x := x - ord('a') + 10;
  83.     END;
  84.     Inc(i);
  85.   END;
  86.   hexval := x;
  87. END;
  88.  
  89. FUNCTION bcd{(x: Integer): Integer};
  90. { "Binary Coded Decimal" auswerten, z. B. $3465 ergibt 3465. }
  91. VAR i,y: Integer;
  92. BEGIN
  93.   y := 0;
  94.   FOR i := 3 DOWNTO 0 DO
  95.     y := 10*y + (x SHR (4*i)) AND $F;
  96.   bcd := y;
  97. END;
  98.  
  99. BEGIN  { Initialisierungen }
  100.   thisjob := 0;
  101.   asciifile := True; overwrite := True;
  102.   outputname := 'RAM:VTdatei'; iffpicname := outputname;
  103.   withicon := FromWB;
  104.   queued := 0; firstinq := 1; fifo := True;
  105. END.
  106.